package com.example.filestorage.starter.service;

import com.example.filestorage.starter.exception.FileStorageException;
import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件存储服务类，提供统一的文件存储接口
 */
public class FileStorageService {
    
    private final StorageManagerService storageManagerService;

    public FileStorageService(StorageManagerService storageManagerService) {
        this.storageManagerService = storageManagerService;
    }

    /**
     * 存储文件
     * @param file 要存储的文件
     * @return 文件唯一标识符
     * @throws FileStorageException 文件存储异常
     */
    public String storeFile(MultipartFile file) throws FileStorageException {
        return storageManagerService.storeFile(file);
    }

    /**
     * 加载文件资源
     * @param fileName 文件名
     * @return 文件资源
     * @throws FileStorageException 文件存储异常
     */
    public Resource loadFileAsResource(String fileName) throws FileStorageException {
        return storageManagerService.loadFileAsResource(fileName);
    }
    
    /**
     * 删除文件
     * @param fileName 文件名
     * @throws FileStorageException 文件存储异常
     */
    public void deleteFile(String fileName) throws FileStorageException {
        storageManagerService.deleteFile(fileName);
    }
    
    /**
     * 列出所有文件
     * @return 文件名列表
     * @throws FileStorageException 文件存储异常
     */
    public List<String> listFiles() throws FileStorageException {
        return storageManagerService.listFiles();
    }
}